Метасинтаксична змінна
Метасинтаксична змінна, метазмінна — це конкретне слово або набір слів, визначений як змінна у інформатиці та, зокрема, в комп’ютерному програмуванні . Ці слова зазвичай зустрічаються у вихідному коді і призначені для зміни або заміни перед використанням у реальному світі. Слова foo і bar є хорошими прикладами, оскільки вони використовуються в понад 330 запитах цільової групи Internet Engineering для коментарів, документах, які визначають основні інтернет-технології, такі як HTTP (веб), TCP/IP та протоколи електронної пошти . [1] [2]
За математичною аналогією метасинтаксична змінна - це слово, яке є змінною для інших слів, так само як в алгебрі літери використовуються як змінні для чисел. [1]
Метасинтаксичні змінні використовуються для іменування сутностей, таких як змінні, функції та команди, точна ідентичність яких не важлива, і служать лише для демонстрації концепції, яка корисна для навчання програмуванню.
Оскільки англійська мова є основною мовою, або lingua franca, для більшості мов комп’ютерного програмування, ці змінні часто зустрічаються навіть у програмах і прикладах програм, написаних для іншої розмовної аудиторії.
Однак типові назви можуть залежати від субкультури та аудиторії, що склалася навколо даної мови програмування .
Метасинтаксичні змінні, які зазвичай використовуються в усіх мовах програмування, включають foobar, foo, bar, baz, qux, quux, quuz, corge, grault, garply, waldo, fred, plugh, xyzzy і thud ; кілька з цих слів є посиланнями на гру Colossal Cave Adventure . [1] [3] Wibble, wobble, wubble і flob також використовуються у Великій Британії. [4]
Повне посилання можна знайти в книзі MIT Press під назвою The Hacker's Dictionary .
Японська мова
У японській мові hoge (ほげ) [5] і piyo (ぴよ), а іншими поширеними словами та варіантами є fuga (ふが), hogera (ほげら) і hogehoge (ほげほげ). Зверніть увагу, що -ra є множинним закінченням в японській мові, а для множини також використовується дублювання. Походження hoge як метасинтаксичної змінної невідоме, але вважається, що воно датується початком 1980-х років. [6]
Французька мова
У Франції широко використовується слово toto, з варіантами tata, titi, tutu як пов’язаними змінними. Одним із поширених джерел використання toto є посилання на стандартний символ, який використовується, щоб розповідати жарти з Tête à Toto .
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/33/Metasyntactic_Variable_FOO_in_Shell.png/220px-Metasyntactic_Variable_FOO_in_Shell.png)
С
У наступному прикладі ім'я функції foo і рядок імені змінної є метасинтаксичними змінними. Рядки, що починаються з "//", є коментарями.
// The function named foo
int foo(void)
{
// Declare the variable bar and set the value to 1
int bar = 1;
return bar;
}
С++ Прототипи функцій із прикладами різних механізмів передачі аргументів [7]
void Foo(Fruit bar);
void Foo(Fruit* bar);
void Foo(const Fruit& bar);
Приклад, що показує можливості перевантаження функцій мови C++
void Foo(int bar);
void Foo(int bar, int baz);
void Foo(int bar, int baz, int qux);
Spam, ham і eggs є основними метасинтаксичними змінними, які використовуються в мові програмування Python . [8] Це посилання на відомий комедійний скетч « Спам », написаний Монті Пайтоном, епонімом мови. [9] У наступному прикладі spam, ham і eggs є метасинтаксичними змінними, а рядки, що починаються на #, є коментарями.
# Define a function named spam
def spam():
# Define the variable ham
ham = "Hello World!"
# Define the variable eggs
eggs = 1
return
І RFC IETF, і мови комп’ютерного програмування відображаються у вигляді простого тексту, що робить необхідним розрізняти метасинтаксичні змінні за умовами найменування, оскільки це не буде очевидно з контексту.
Ось приклад з офіційного документа IETF, що пояснює протоколи електронної пошти (з RFC 772 - цитується в RFC 3092 ):
All is well; now the recipients can be specified. S: MRCP TO:<Foo@Y> <CRLF> R: 200 OK S: MRCP TO:<Raboof@Y> <CRLF> R: 553 No such user here S: MRCP TO:<bar@Y> <CRLF> R: 200 OK S: MRCP TO:<@Y,@X,fubar@Z> <CRLF> R: 200 OK Note that the failure of "Raboof" has no effect on the storage of mail for "Foo", "bar" or the mail to be forwarded to "fubar@Z" through host "X".
(Документація для texinfo підкреслює відмінність між метазмінними і простими змінними, які використовуються в мові програмування, задокументовані в якомусь файлі texinfo як: «Використовуйте команду @var для вказівки метасинтаксичних змінних. Метасинтаксична змінна — це щось, що означає інший фрагмент тексту. Наприклад, ви повинні використовувати метасинтаксичну змінну в документації функції для опису аргументів, які передаються цій функції. Не використовуйте @var для імен певних змінних у мовах програмування. Це конкретні назви програми, тому @code підходить для них.» [10] )
Інший момент, відображений у наведеному вище прикладі, — це умова, що метазмінна має бути рівномірно замінена одним і тим же екземпляром у всіх його проявах у даній схемі. Це на відміну від нетермінальних символів у формальних граматиках, де нетермінальні символи праворуч від продукції можуть бути замінені різними екземплярами. [11]
Зазвичай ім’я ACME використовується в прикладі баз даних SQL і як змінна для назви компанії з метою навчання. Термін «база даних ACME» зазвичай використовується для позначення навчального або прикладного набору даних бази даних, що використовуються виключно для навчання або тестування. ACME також зазвичай використовується в документації, яка показує приклади використання SQL, звичайну практику в багатьох навчальних текстах, а також технічній документації таких компаній, як Microsoft і Oracle . [12] [13] [14]
- Метазмінна[en]
- xyzzy[en]
- Аліса і Боб
- Джон Доу
- Виріб
- Вільні і зв'язані змінні
- Гаджет
- Екземплифікант
- Lorem ipsum
- Оказіоналізм (філологія)
- Смурф
- Фнорд[en]
- ↑ а б в [[[:Шаблон:Cite IETF/makelink]] Etymology of "Foo"]. doi:10.17487/RFC3092. Шаблон:Cite IETF/doctypes.
- ↑ Document Retrieval. RFC Editor. Архів оригіналу за 19 грудня 2021. Процитовано 13 грудня 2021.
- ↑ Laughlin, Stuart (18 листопада 2016). Metasyntactic variable (Список розсилки). Архів оригіналу за 2 травня 2021. Процитовано 13 грудня 2021.
- ↑ wibble. (n.d.). Jargon File 4.4.7. Retrieved February 23, 2010, from
- ↑ hogeの意味・使い方 - 英和辞典 Weblio 辞書. ejje.weblio.jp. Архів оригіналу за 13 грудня 2021. Процитовано 13 грудня 2021.
- ↑ メタ構文変数 (яп.)
- ↑ Mongan, John; Kindler, Noah; Giguere, Eric (2012). Programming Interviews Exposed: Secrets to Landing Your Next Job. John Wiley & Sons. с. 242. ISBN 978-1-118-28720-0. Архів оригіналу за 13 грудня 2021. Процитовано 13 грудня 2021.
- ↑ The Python Tutorial — Python 3.8.1 documentation. docs.python.org. Архів оригіналу за 13 травня 2022. Процитовано 13 грудня 2021.
- ↑ General Python FAQ — Python 3.9.7 documentation. docs.python.org. Python Software Foundation. 4 вересня 2021. Why is it called Python?. Архів оригіналу за 26 серпня 2021. Процитовано 5 вересня 2021.
- ↑ Marking Words and Phrases. Texinfo 4.0. The GNU Documentation Format. Архів оригіналу за 6 листопада 2009. Процитовано 25 листопада 2012.
- ↑ R. D. Tennent (2002). Specifying Software: A Hands-On Introduction. Cambridge University Press. с. 36–37 and 210. ISBN 978-0-521-00401-5.
- ↑ Kriegel, Alex (2008). SQL bible. Wiley. ISBN 978-0-470-22906-4. OCLC 402446308.
- ↑ Ruel, Chris (2014). Oracle 12c for dummies (дан.). John Wiley & Sons. ISBN 978-1-118-74531-1. OCLC 870334544.
- ↑ Work with data in ASP.NET Core Apps. docs.microsoft.com. Архів оригіналу за 13 грудня 2021. Процитовано 13 грудня 2021.
- Визначення метасинтаксичної змінної з прикладами.
- Приклади метасинтаксичних змінних, що використовуються в Commonwealth Hackish, наприклад вомбат .
- Змінна "foo" та інші дивацтва програмування